package com.caregiver.watch.business.care.service;

import com.caregiver.watch.business.care.model.dto.AddFenceSettingParam;
import com.caregiver.watch.business.care.model.dto.DeleteFenceSettingParam;
import com.caregiver.watch.business.care.model.dto.EnableFenceSettingParam;
import com.caregiver.watch.business.care.model.dto.UpdateFenceSettingParam;
import com.caregiver.watch.business.care.model.vo.FenceRecipientVo;
import com.caregiver.watch.business.care.model.vo.FenceSettingDetailVo;
import com.caregiver.watch.business.care.model.vo.FenceSettingVo;
import com.caregiver.watch.business.data.model.po.HealthDeviceLocation;

import java.util.List;

/**
 * @description: 围栏设置服务
 * @program: caregiver-watch
 * @author: 疆戟
 * @create: 2025-10-05 20:51
 */
public interface FenceService {


    /**
     * 查询围栏设置列表
     * @return
     */
    List<FenceSettingVo> queryFenceSettingList();

    /**
     * 查询围栏设置
     * @return
     */
    FenceSettingDetailVo queryFenceSetting(Long fenceId);

    /**
     * 新增围栏设置
     * @param param
     * @return
     */
    Boolean addFenceSetting(AddFenceSettingParam param);

    /**
     * 修改围栏设置
     * @param param
     * @return
     */
    Boolean updateFenceSetting(UpdateFenceSettingParam param);

    /**
     * 启用/禁用围栏设置
     * @param param
     * @return
     */
    Boolean enableFenceSetting(EnableFenceSettingParam param);

    /**
     * 删除围栏设置
     * @param param
     * @return
     */
    Boolean deleteFenceSetting(DeleteFenceSettingParam param);


    /**
     * 围栏告警处理
     * @param userId
     * @param deviceId
     * @param deviceLocations
     */
    void fenceAlarmHandle(Long userId, String deviceId, List<HealthDeviceLocation> deviceLocations);

    /**
     * 查询围栏生效人列表
     * @return
     */
    FenceRecipientVo queryFenceRecipientList();
}
